using System;
using System.IO;
using System.Xml.Serialization;
using App.Modelo.Menu;

namespace App.Seguridad.Vista.Menu
{
    /// <summary>
    /// Esta clase lee el archivo XML y lo carga al manejador del menu MenuControladorAbstract
    /// </summary>
    public class MenuSeguridadXmlLoader
    {
        public string FilePath { get; set; }
        
        /// <summary>
        /// Carga el menu menuControlador con el modelo 
        /// </summary>
        public Modelo.Menu.MenuContenedor Load()
        {
            var xmlSerializer = new XmlSerializer(typeof(Modelo.Menu.MenuContenedor));

            if (!System.IO.File.Exists(FilePath))
                throw new Exception("El archivo " + FilePath + " no existe");

            var streamReader = new StreamReader(FilePath);
            try
            {
                var model = (Modelo.Menu.MenuContenedor)xmlSerializer.Deserialize(streamReader);
                streamReader.Close();

                return model;
            }
            catch (Exception e)
            {
                streamReader.Close();
                throw new Exception("No se puede deserializar el archivo xml: " + FilePath, e);
            }
        }
    }
}